/**
 * 图片资源优化插件
 * 自动压缩和优化图片资源
 */

import { Plugin } from 'vite';

interface ImageOptimizerOptions {
  /** 是否在开发环境中也优化 */
  dev?: boolean;
  /** 压缩质量 0-100 */
  quality?: number;
  /** 支持的图片格式 */
  formats?: string[];
}

export const configImageOptimizer = (options: ImageOptimizerOptions = {}): Plugin => {
  const {
    dev = false,
    quality = 80,
    formats = ['png', 'jpg', 'jpeg', 'webp', 'gif']
  } = options;

  return {
    name: 'vite-plugin-image-optimizer',
    apply: 'build', // 只在构建时应用

    generateBundle(options, bundle) {
      // 这里可以集成图片压缩工具，如 sharp、imagemin 等
      // 目前主要是标记大图片用于后续优化建议
      const imageAssets = Object.entries(bundle)
        .filter(([_, asset]) => asset.type === 'asset' &&
          formats.some(format => _.includes(`.${format}`)))
        .map(([fileName, asset]: any) => ({
          fileName,
          size: asset.source ? Buffer.byteLength(asset.source) : 0
        }))
        .filter(asset => asset.size > 100 * 1024); // 大于100KB的图片

      if (imageAssets.length > 0) {
        console.warn('🖼️  发现大图片资源，建议进一步优化：');
        imageAssets.forEach(asset => {
          const sizeInMB = (asset.size / 1024 / 1024).toFixed(2);
          console.warn(`  ${asset.fileName}: ${sizeInMB}MB`);
        });
        console.warn('💡 建议：');
        console.warn('  1. 使用 WebP 格式替代 PNG/JPEG');
        console.warn('  2. 实施响应式图片，提供多种尺寸');
        console.warn('  3. 考虑图片懒加载');
        console.warn('  4. 将大图片移至CDN');
      }
    }
  };
};
